package ysf.com.sort;

import com.alibaba.fastjson.JSON;

/**
 * @author ysf
 * @version 1.0
 * @date 2021/12/11 14:50
 * <p>
 * 选择排序
 *
 * 选择排序原理：首先在未排序
 * 遍历数组 拿第一个元素和其余元素相比找出最小或最大的元素放在首位或末位，并记下最小/最大元素的下标位置，
 * 沿着此位置继续向后遍历，直至所有的元素都已经相互比较完毕
 *
 */
public class SelectSort {

    public static void main(String[] args) {

        int[] arrys = {10, 6, 8, 3, 7, 1};
        System.out.println(JSON.toJSONString(arrys));

        testSelectSort(arrys);

        System.out.println(JSON.toJSONString(arrys));


    }

    /**
     * 简单排序
     *
     * @param arrys
     */
    public static void testSelectSort(int[] arrys) {

        //遍历所有的数
        for (int i = 0; i < arrys.length; i++) {
            int minIndex = i;
            // 把当前遍历的数和后面所有的数进行比较 , 并记录下最小的数的下标

            for (int j = i + 1; j < arrys.length; j++) {
                if (arrys[j] < arrys[minIndex]) {
                    // 记录最小下标
                    minIndex = j;
                }
            }
            //  如果最小的数和当前遍历的下标不一致,则交换
            if (i != minIndex) {
                int temp = arrys[i];
                arrys[i] = arrys[minIndex];
                arrys[minIndex] = temp;
            }
        }
    }


}
